#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    pid_t pid = fork();

    if (pid == 0) {
        // 子进程：父进程已退出，成为孤儿进程
        printf("子进程 PID: %d 启动，原父进程 PID: %d\n", getpid(), getppid());
        sleep(10); // 等待父进程退出
        printf("子进程的新父进程 PID: %d（已由 init/systemd 接管）\n", getppid());
        sleep(60); // 保持运行以便观察
        exit(0);
    } else if (pid > 0) {
        // 父进程立即退出，制造孤儿进程
        printf("父进程 PID: %d 退出\n", getpid());
        exit(0);
    } else {
        perror("fork 失败");
        exit(1);
    }
}


